package net.freestu.sola.web.parser.Parse;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import net.freestu.sola.web.parser.Parse.PageUpdate.UpdateForward;


/**
 * 这个地方不设计成多线程的了，太麻烦，而且这个地方并不是效率点啊！！！！
 * 解析XMl文件然后将其判断是否为Update,Add,Delete，进行转发
 * @author 秋刀鱼的滋味
 */
public class UpdateParse extends Thread{
	
	private String evironment;//这里是成都理工大学这个环境。
	private String name;//线程名字，二级域名www.lib.cdut.edu.cn
	//private File pagedb;//Crawl Folder;存放一级域名的爬行结果
	private File pages;//二级域名下的爬行结果
	
	//D:\\工作室收藏\\编程工作室\\JAVA区\\Java程序调试区\\搜索引擎\\workspace\\总的文件夹
	//这个文件应该在配置文件中显示
	
	private File xmldatafolder;  //xmldatafolder文件夹下面还有www.lib.cdut.edu.cn
	
	private File xmlfolder;      //xmldatafolder/lib.cdut.edu.cn
	private File crawlfolder;    //crawlfolder
	
	private String work_place;
	
	/**
	 * @param name                文件
	 * @param pagedb              page对象集
	 * @param evironment          成都理工大学环境
	 * @param xmldatafolder 
	 */
	public UpdateParse(String name,File crawlfolder,String evironment,
			File xmldatafolder,String work_place){
		
		super(name);//指定线程的名字.
		this.name=name;
		this.crawlfolder=crawlfolder;
		this.evironment=evironment;//成都理工大学.
		this.xmldatafolder=xmldatafolder;//XML文件夹.这里测试时是用"./Xml Folder"
		xmlfolder=new File(xmldatafolder,name);//里面装xml文件XmlData Folder
		this.work_place=work_place;
	}
	
	public void run(){
		
		//!!这里先检测里面没有的文件夹，将没有下载下来的文件夹的Link2MD5的
		
		//1.将网页库的东西全输出到XMl文件中.这个地方需要把这个XML Folder文件表示出来。
		//指定Crawl Folder和Xml Folder
		new Bridge(name,crawlfolder,xmldatafolder).exe();
		
		List xmlfiles=getXmls();//将这个地方的xml文件全部读取到这个XMLFile
		
		//2.将XML文件经过决策器进行转发。
		UpdateForward uf= new UpdateForward((ArrayList)xmlfiles,xmlfolder);
		
		//&&&System.out.println(name+":UpdateForward进行转发.");
		
		
		/*%%%
		try {
			Thread.sleep(5000);//这里的延迟是什么意思啊?
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}*/
		
		
		uf.mapData();//将数据分发到三个临时文件里面
		
		/*%%%%生成执行文件代码去掉
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}*/
		uf.end();    //这两步应该必须有!
		//%%%%System.out.println(name+":该进程更新完毕......");
		
	}
	
	/**
	 * @return
	 */
	public List getXmls(){
		
		List list=new ArrayList();
		
	    File[] fs=xmlfolder.listFiles();//在www.lib.cdut.edu.cn 文件夹
	    
	    for(File f:fs){
	    	
	    	String n=f.getName();
	    	if(n.endsWith("xml")){
	    		list.add(f);
	    	}
	    }
	    return list;
	}
	
	public static void main(String[] args){
		
	}
}